package org.geektimes.web.mvc.header;

import org.geektimes.web.mvc.header.matedata.HandlerMethodInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

public interface HandlerMethodRegistry {


	/**
	 * 注册方法处理器
	 * @param handlerMethodInfo 方法处理器信息
	 */
	void registerHandlerMethod(HandlerMethodInfo handlerMethodInfo);


	/**
	 * 根据路径获取处理器
	 * @param path
	 * @return
	 */
	HandlerMethodInfo get(String path);


	/**
	 * 获取所有的处理器
	 * @return
	 */
	Map<String ,  HandlerMethodInfo> getHandlerMethods();


	/**
	 * 获取处理处理器key
	 * @param request 请求对象
	 * @param path 请求路径 不包括root路径
	 * @return
	 */
	String getHandlerMethodKey(HttpServletRequest request , String path);
}
